/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package src.com.dados.midiateca;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import src.com.dados.Conexao;
import src.com.negocio.midiateca.MaterialDidatico;

/**
 *
 * @author Adriano
 */
public class MaterialDidaticoDAO {

    MaterialDidatico material = new MaterialDidatico();

    public boolean cadastraMaterial(MaterialDidatico material) {
        Connection con;

        con = Conexao.getInstance().getCon();
        String sql = "INSERT INTO material (codigo_mat, tipo_mat, titulo, quantidade, autor, fornecedor, preco, tipo_aquisicao) values (?,?,?,?,?,?,?,?)";
        PreparedStatement pstmt;

        try {
            // cria um preparedStatement
            pstmt = con.prepareStatement(sql);

            // preenche os valores
            pstmt.setInt(1, material.getCodigo());
            pstmt.setString(2, material.getTipoMaterial());
            pstmt.setString(3, material.getTitulo());
            pstmt.setInt(4, material.getQuantidade());
            pstmt.setString(5, material.getAutor());
            pstmt.setString(6, material.getFornecedor());
            pstmt.setFloat(7, material.getPreco());
            pstmt.setString(8, material.getTipoAquisicao());

            pstmt.executeUpdate();

            System.out.println("Material gravado!");
            return true;
        } catch (SQLException e) {
        }
        return false;
    }
    
    public boolean atualizaQuantidade (int codigo, int quantidade) throws SQLException{
        Connection con;
        con = Conexao.getInstance().getCon();
        
        
        
        
        String sql = "UPDATE material SET quantidade = "+ quantidade +" WHERE codigo_mat = "+codigo;
        Statement stmt = con.createStatement();
        stmt.executeUpdate(sql);
        
        
        return true;
        
        
        
    }

    public MaterialDidatico buscarMaterial(int codigo) throws SQLException {
        Connection con;

        con = Conexao.getInstance().getCon();
        String sql = "SELECT * FROM material WHERE codigo_mat = " + codigo;

        try {
            Statement stm;
            stm = con.createStatement();
            ResultSet rs = stm.executeQuery(sql);

            if (rs.next()) {
                MaterialDidatico materialEncontrado = new MaterialDidatico();
                materialEncontrado.setCodigo(codigo);
                materialEncontrado.setTipoMaterial(rs.getString("tipo_mat"));
                materialEncontrado.setTitulo(rs.getString("titulo"));
                materialEncontrado.setQuantidade(rs.getInt("quantidade"));
                materialEncontrado.setAutor(rs.getString("autor"));
                materialEncontrado.setFornecedor(rs.getString("fornecedor"));
                materialEncontrado.setPreco(rs.getFloat("preco"));
                materialEncontrado.setTipoAquisicao(rs.getString("tipo_aquisicao"));
                return materialEncontrado;
            }
        } catch (SQLException e) {
            System.out.println(e);
        }
        return null;
    }

    public boolean excluirMaterial(int codigo) throws SQLException {
        Connection con;

        con = Conexao.getInstance().getCon();
        String sql = "DELETE FROM material WHERE codigo_mat = " + codigo;

        try {
            Statement stm;
            stm = con.createStatement();
            stm.execute(sql);
            return true;

        } catch (SQLException e) {
            System.out.println(e);
        }
        return false;
    }

    public boolean atualizarMaterial(MaterialDidatico material) {
        Connection con = Conexao.getInstance().getCon();
        
        String sql = "UPDATE material SET tipo_mat=?, titulo=?, quantidade=?, autor=?, fornecedor=?, preco=?, tipo_aquisicao=? WHERE codigo_mat=?;";
        PreparedStatement pstmt;

        try {
            // cria um preparedStatement
            pstmt = con.prepareStatement(sql);

            // preenche os valores
            pstmt.setString(1, material.getTipoMaterial());
            pstmt.setString(2, material.getTitulo());
            pstmt.setInt(3, material.getQuantidade());
            pstmt.setString(4, material.getAutor());
            pstmt.setString(5, material.getFornecedor());
            pstmt.setFloat(6, material.getPreco());
            pstmt.setString(7, material.getTipoAquisicao());
            pstmt.setInt(8, material.getCodigo());

            pstmt.executeUpdate();

            System.out.println("Atualizacao realizada!");
            return true;
        } catch (SQLException e) {
            System.out.println(e);
        }
        return false;

    }
}
